package com.ito.areTrabajo.arbol_SeedTool.plantillas;

import java.util.List;

import com.ito.areaTrabajo.modelo.dao.ProyectoDao;
import com.ito.ito.areaTrabajo.modelo.Proyecto;

public class ListaPlantillas {
	private ProyectoDao proyectoDao;
	private NodosArbol<DatosArbol> raiz;

	public ListaPlantillas() {
		proyectoDao = new ProyectoDao();

	}


	public NodosArbol<DatosArbol> obtenerArbolProyectos(Long idUsuario) {
		ColeccionNodosArbol<DatosArbol> listaProyectos = new ColeccionNodosArbol<DatosArbol>();
		List<Proyecto> proyectoUsuario = proyectoDao
				.proyectosPorUsuario(idUsuario);

		if (proyectoUsuario != null) {
			if (!proyectoUsuario.isEmpty()) {
				for (int i = 0; i < proyectoUsuario.size(); i++) {

					DatosArbol portada = new DatosArbol("Portada del documento", proyectoUsuario.get(i).getIdProyecto(),1,(proyectoUsuario.get(i).getGplantillas().getPlantillas().get(0).getEstructuras().size()==0?false:true));
					DatosArbol controlVersiones = new DatosArbol("Control de versiones", proyectoUsuario.get(i).getIdProyecto(),2,(proyectoUsuario.get(i).getGplantillas().getPlantillas().get(1).getEstructuras().size()==0?false:true));
					DatosArbol controlRevisiones = new DatosArbol("Control de revisiones", proyectoUsuario.get(i).getIdProyecto(),3,(proyectoUsuario.get(i).getGplantillas().getPlantillas().get(2).getEstructuras().size()==0?false:true));
					DatosArbol encabPie = new DatosArbol("Encabezado y pie de pagina", proyectoUsuario.get(i).getIdProyecto(),4,(proyectoUsuario.get(i).getGplantillas().getPlantillas().get(3).getEstructuras().size()==0?false:true));

					DatosArbol docReq = new DatosArbol("Documento de requerimientos", proyectoUsuario.get(i).getIdProyecto(),5,(proyectoUsuario.get(i).getGplantillas().getPlantillas().get(4).getEstructuras().size()==0?false:true));
					DatosArbol solReq = new DatosArbol("Solicitud de requerimiento", proyectoUsuario.get(i).getIdProyecto(),6,(proyectoUsuario.get(i).getGplantillas().getPlantillas().get(5).getEstructuras().size()==0?false:true));
					DatosArbol matriz = new DatosArbol("Matriz de trazabilidad", proyectoUsuario.get(i).getIdProyecto(),7,(proyectoUsuario.get(i).getGplantillas().getPlantillas().get(6).getEstructuras().size()==0?false:true));
					DatosArbol cdu = new DatosArbol("Casos de prueba", proyectoUsuario.get(i).getIdProyecto(),8,(proyectoUsuario.get(i).getGplantillas().getPlantillas().get(7).getEstructuras().size()==0?false:true));
					DatosArbol criterios = new DatosArbol("Criterios de aceptacion", proyectoUsuario.get(i).getIdProyecto(),9,(proyectoUsuario.get(i).getGplantillas().getPlantillas().get(8).getEstructuras().size()==0?false:true));
					DatosArbol reqCdu = new DatosArbol("Requerimientos por caso de uso", proyectoUsuario.get(i).getIdProyecto(),10,(proyectoUsuario.get(i).getGplantillas().getPlantillas().get(9).getEstructuras().size()==0?false:true));

					NodosArbol<DatosArbol> hojaPortada = new NodosArbol<DatosArbol>(
							portada);
					NodosArbol<DatosArbol> hojaControlVersiones = new NodosArbol<DatosArbol>(
							controlVersiones);
					NodosArbol<DatosArbol> hojaControlRevisiones = new NodosArbol<DatosArbol>(
							controlRevisiones);
					NodosArbol<DatosArbol> hojaEncabPi = new NodosArbol<DatosArbol>(
							encabPie);
					NodosArbol<DatosArbol> hojaDocReq = new NodosArbol<DatosArbol>(
							docReq);
					NodosArbol<DatosArbol> hojaSolReq = new NodosArbol<DatosArbol>(
							solReq);
					NodosArbol<DatosArbol> hojaMatriz = new NodosArbol<DatosArbol>(
							matriz);
					NodosArbol<DatosArbol> hojaCdu = new NodosArbol<DatosArbol>(
							cdu);
					NodosArbol<DatosArbol> hojaCriterios = new NodosArbol<DatosArbol>(
							criterios);
					NodosArbol<DatosArbol> hojaReqCdu = new NodosArbol<DatosArbol>(
							reqCdu);

					ColeccionNodosArbol<DatosArbol> plantillasGenerales = new ColeccionNodosArbol<DatosArbol>();
					plantillasGenerales.add(hojaPortada);
					plantillasGenerales.add(hojaControlVersiones);
					plantillasGenerales.add(hojaControlRevisiones);
					plantillasGenerales.add(hojaEncabPi);
					DatosArbol plantillasGeneralesCat = new DatosArbol();
					plantillasGeneralesCat.setNombre("Plantillas generales");

					ColeccionNodosArbol<DatosArbol> plantillasProceso = new ColeccionNodosArbol<DatosArbol>();
					plantillasProceso.add(hojaDocReq);
					plantillasProceso.add(hojaSolReq);
					plantillasProceso.add(hojaMatriz);
					plantillasProceso.add(hojaCdu);
					plantillasProceso.add(hojaCriterios);
					plantillasProceso.add(hojaReqCdu);
					DatosArbol plantillasProcesoCat = new DatosArbol();

					plantillasProcesoCat.setNombre("Plantillas proceso");

					NodosArbol<DatosArbol> nodoGenerales = new NodosArbol<DatosArbol>(
							plantillasGeneralesCat, plantillasGenerales);
					NodosArbol<DatosArbol> nodoProceso = new NodosArbol<DatosArbol>(
							plantillasProcesoCat, plantillasProceso);

					ColeccionNodosArbol<DatosArbol> encapsulaHoja = new ColeccionNodosArbol<DatosArbol>();
					encapsulaHoja.add(nodoGenerales);
					encapsulaHoja.add(nodoProceso);

					DatosArbol nodoArbol = new DatosArbol();
					nodoArbol.setNombre(proyectoUsuario.get(i)
							.getNombreProyecto());

					NodosArbol<DatosArbol> nodoProyecto = new NodosArbol<DatosArbol>(
							nodoArbol, encapsulaHoja);
					listaProyectos.add(nodoProyecto);

				}
				if (!listaProyectos.isEmpty()) {
					raiz = new NodosArbol<DatosArbol>(null, listaProyectos);

				}
			}
		}

		return raiz;
	}

}
